
<html>
    <body>
<script>
   // total to reach
function prog(actualprogress)
{
	
  var progressnum = document.getElementById("progressnum");
  var indicator = document.getElementById("indicator");	
  indicator.style.width=(actualprogress*4) + "px";
  progressnum.innerHTML = actualprogress + "%"; 
}

</script>

<link href="css/stylese.css" rel="stylesheet" type="text/css" media="all" />


<?php
require_once("Clases/Reporte.php");

function pollo()
{
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');

date_default_timezone_set('Europe/London');

/** Include PHPExcel_IOFactory */
require_once "Excel/Classes/PHPExcel/IOFactory.php";

$archivo = "Excel/DatosAlumnos.xls";
if (!file_exists($archivo)) {
    ?>
<script>
        alert("Error : El Archivo no se Copio al Servidor");
    </script>
    <?
	exit("ERROR: NO EXISTE EL ARCHIVO EXCEL!." . EOL);
}

$objPHPExcel = PHPExcel_IOFactory::load($archivo);
$excel = validaExcel($objPHPExcel);
if($excel == "true")
{
    $sheet = $objPHPExcel->getSheetByName("desglose");
    if($sheet->getCell('O2')!= "")
        $parcial = 4;
    else if ($sheet->getCell('N2')!= "")
        $parcial = 3; 
    else if ($sheet->getCell('M2')!= "")
        $parcial = 2; 
    else if ($sheet->getCell('L2')!= "")
        $parcial = 1;
    $top = $sheet->getHighestRow() + 1;
    $matriculasArray = array();
    $alumnosExcelArray = array();
    $matricula = $sheet->getCellByColumnAndRow(2, 2)->getFormattedValue();
    /*******************************************************************************/
    for($x=2;$x<$top;$x++)
    {
        $percent = (intval($x/($top-1) * 100)*.5);
        echo '<script language="javascript">   prog('.$percent.'); </script>';
        echo str_repeat(' ',1024*64);
        flush();
        $matricula = $sheet->getCellByColumnAndRow(2,$x)->getFormattedValue();
        if(!in_array($matricula, $matriculasArray)){
            $nombre = $sheet->getCellByColumnAndRow(3,$x)->getFormattedValue();
            $objAE = new AlumnoExcel($matricula,$nombre);
            for($p=0;$p<$parcial;$p++)
            {
                $objParcial = new Parcial();
                for($y=$x;$y<$top;$y++)
                {
                    $currentMatricula = $sheet->getCellByColumnAndRow(2, $y)->getFormattedValue();
                    if($matricula==$currentMatricula){
                        $materia = $sheet->getCellByColumnAndRow(9, $y)->getFormattedValue();
                        $calificacion = $sheet->getCellByColumnAndRow((11+$p), $y)->getFormattedValue();
                        $faltas = $sheet->getCellByColumnAndRow(21, $y)->getFormattedValue();
                        $limite = $sheet->getCellByColumnAndRow(15, $y)->getFormattedValue();
                        $objMateria = new Materia($materia,$calificacion,$faltas,$limite);
                        array_push($objParcial->materias,$objMateria);
                    }
                }
                array_push($objAE->parciales,$objParcial);
            }
            array_push($matriculasArray, $matricula);
            array_push($alumnosExcelArray, $objAE);
        }
        
        sleep(.1);
    }
    /*****************************************************************************************/
    $nominaDirector = "DIRE";
    $x = 0;
    $top = sizeof($alumnosExcelArray);
    $counterReprobados = 0;
    $counterFaltas = 0;
    foreach($alumnosExcelArray as $alumno)
    {
       $flagFaltas = false;   
       $flagPromedio = false;
       $percent = ((intval(++$x/($top) * 100))*.5)+50;
       $FechaReporte = date('Y-m-d H:i:s');       
       $promedio = $alumno->parciales[$parcial-1]->getPromedioParcial();
       $reprobadas = $alumno->parciales[$parcial-1]->getMateriasReprobadasParcial();
       $Descripcion = "";
       
       $flagGravedad = 1;
       $promedio = (int)$promedio;
       $Descripcion = "El Alumno Obtuvo un Promedio de ".$promedio." Reprobando ".$reprobadas." Materia(s) en el Parcial ".$parcial." </br> ";
       $Descripcion .= "Las Materias Reprobadas fueron las siguientes: </br> ";
       $DescripcionFaltas = "El Alumno Obtuvo Faltas Acumuludas Considerables En las Siguiente(s) Materia(s) en el Parcial ".$parcial." </br> ";
       $DescripcionFaltas .= "Las Materias fueron las siguientes: </br> ";
       foreach($alumno->parciales[$parcial-1]->materias as $mat)
       {
           if($mat->calificacion<70 && $mat->calificacion != "A" && $mat->calificacion != "")
               $Descripcion .= $mat->nombre." : ".$mat->calificacion."</br> ";
           if(reporteFaltas($mat->faltas,$mat->limite,$parcial)!=0)
           {
               $flagFaltas = true;
               $DescripcionFaltas .= $mat->nombre." : ".$mat->faltas." Con Limite de ".$mat->limite."</br> ";
           }
       }
       $Descripcion .= "</br> ";
       /*******GRAVEDAD********/
       if($reprobadas == 2)
       {
           $flagPromedio = true;
           $flagGravedad = 1;   
       }
       else if($reprobadas > 2)
       {
           $flagPromedio = true;
           $flagGravedad = 2;
       }
       else
           $flagPromedio = false;
       /************************/
       /*DESCRIPCION REPORTE*/
       $DescripcionReporte = "";
       if($flagPromedio) $counterReprobados++;
       if($flagFaltas) $counterFaltas++;
       /*********************/
       if($flagPromedio && !$flagFaltas)
           $DescripcionReporte = $Descripcion;
       else if ($flagFaltas && !$flagPromedio)
           $DescripcionReporte = $DescripcionFaltas;
       else if ($flagFaltas && $flagPromedio)
           $DescripcionReporte = $Descripcion."</br>".$DescripcionFaltas;
       /**********************/
       /*LEVANTAR REPORTE*/
       if($flagPromedio || $flagFaltas){
           $rep = new \Clases\Reporte();
           $rep->LlenarReporte($nominaDirector, 0, $FechaReporte, $FechaReporte, $flagGravedad, $DescripcionReporte, $alumno->matricula);
       }
       /*****************/
       echo '<script language="javascript">   prog('.$percent.'); </script>'; 
       echo str_repeat(' ',1024*64);
       flush();
     }

?>
<script>
    alert("Se Ha Cargado el Archivo");
    alert("En el Parcial <?echo $parcial;?> hubo un total de <?echo $counterReprobados;?> Alumnos con reporte de Atencion Academica <?echo $counterFaltas;?> Alumnos con reporte por Faltas");
    window.location = "inicioDirector.php";
    </script>
        <?
}
else if($excel == "sheet"){
     ?>
    <script>
        alert("No Se Encontro la Hoja con el nombre de 'desglose'");
    </script>
        <?
   }
else if($excel == "columnas"){
    ?>
    <script>
        alert("El Formato de las columnas es incorrecto, checar manual de usuario para mayor informacion");
    </script>
        <?
   }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

function reporteFaltas($faltas,$limite,$parcial)
{
    switch($parcial)
    {
        case 1:
             if($faltas>= ($limite*.4))
                return 2;
             else if($faltas>= ($limite*.2))
                return 1;
            break;
        case 2:
             if($faltas>= ($limite*.6))
                 return 2;
             else if($faltas>= ($limite*.4))
                 return 1;
            break;
        case 3:
            if($faltas>= ($limite*.8))
                 return 2;
             else if($faltas>= ($limite*.6))
                 return 1;
            break;
        case 4:
            if($faltas>$limite)
                 return 2;
            break;
    } 
    return 0;
}

function validaExcel($objPHPExcel)
{
    $sheet = $objPHPExcel->getSheetByName("desglose");
    if($sheet == null)
    {
        return "sheet";
    }
   
    if($sheet->getCell('C1')->getFormattedValue()== "Matricula" && $sheet->getCell('D1')->getFormattedValue()== "Nombre del Alumno" && $sheet->getCell('J1')->getFormattedValue()== "Nombre Materia")
       if($sheet->getCell('L1')->getFormattedValue()== "P1" && $sheet->getCell('M1')->getFormattedValue()== "P2"  && $sheet->getCell('N1')->getFormattedValue()== "P3" && $sheet->getCell('O1')->getFormattedValue()== "FNL" && $sheet->getCell('P1')->getFormattedValue()== "LimFal" )
           if($sheet->getCell('R1')->getFormattedValue()== "F1"  && $sheet->getCell('S1')->getFormattedValue()== "F2" && $sheet->getCell('T1')->getFormattedValue()== "F3" && $sheet->getCell('U1')->getFormattedValue()== "F4" )
                  return "true";
    return "columnas";
}

class AlumnoExcel
{
    
    public $parciales,$matricula,$nombre;
    
    public function AlumnoExcel($matricula,$nombre)
    {
        $this->matricula = $matricula;
        $this->nombre = $nombre;
        $this->parciales = array();
    } 
}

class Parcial
{
    public $materias;
    public function Parcial(){$this->materias = array();}
    
    public function getEstado()
    {
        if(getMateriasReprobadasParcial() >= 3)
            return 2;
        else if(getMateriasReprobadasParcial() == 0 && getPromedioParcial() <=80)
            return 1;
        return 0;
    }
    
    public function getPromedioParcial()
    {
        $promedio = 0;
        $coun = 0;
        foreach($this->materias as $materia)
            {
                $promedio+= $materia->calificacion;
                $coun++;
            }
        return ($promedio/$coun);
    }
    
    public function getFaltasParcial()
    {
        $faltas= 0;
        foreach($this->materias as $materia)
            $faltas+= $materia->faltas;
        return $faltas;
    }
    public function getMateriasReprobadasParcial()
    {
        $faltas= 0;
        foreach($this->materias as $materia)
            if($materia->calificacion < 70 && $materia->calificacion != "A" && $materia->calificacion != "")
                $faltas++;
        return $faltas;
    }
}

class Materia
{
    public $faltas,$calificacion,$nombre,$limite;
    public function Materia($nombre,$calificacion,$faltas,$limite)
    {
        $this->nombre = $nombre;
        $this->calificacion = $calificacion;
        $this->faltas = $faltas;
        $this->limite = $limite;
    }
}

?>
</body>
</html>

    
